import {createWebHistory, createRouter} from "vue-router"
import {getToken} from "@/utils/auth";
import {userStore} from "@/stores/user";
import {storeToRefs} from "pinia";
import {routes, routes1, routes2} from "@/router/routes";
import pinia from '@/stores/store'

const router = createRouter({
    // 4. 内部提供了 history 模式的实现。为了简单起见，我们在这里使用 hash 模式。
    history: createWebHistory("/"),
    routes, // `routes: routes` 的缩写
});


const user_store = userStore(pinia)
const {user} = storeToRefs(user_store)
//进行路由拦截：当没有登陆标识，直接打回登陆页面，如何避免退回到 登陆页呢？
router.beforeEach(async (to, from, next) => {
    if (to.path === "/login" || to.path === "/register") {
        next();
    } else {
        let token = getToken();
        if (token) {
            if (!user.value.nick_name) {
                const res = await user_store.getInfo()
                // 这里可以根据用户和管理员 生成不同的路由表
                if (user.value.is_admin) {
                    routes1.forEach(item => {
                        router.addRoute(item)
                    })
                } else {
                    routes2.forEach(item => {
                        router.addRoute(item)
                    })
                }
                if (!router.hasRoute("None")) {
                    router.addRoute({
                        path: "/:catchAll(.*)",
                        name: 'None',
                        redirect: "/404"
                    })
                }
                next({...to, replace: true})
            } else {
                next();
            }
        } else {
            next("/login");
        }

    }
})


export default router;
